#include <cstdio>

class Data
{
public:
	Data(int d1, int d2)
	{
		printf("create data1()\n");
		m_data1 = d1;
		m_data2 = d2;
	}
	
	Data(int d1)
	{
		printf("create data2()\n");
		m_data1 = d1;
	}
	
	Data(const Data &dd)
	{
		printf("copy data()\n");
		m_data1 = dd.m_data1;
		m_data2 = dd.m_data2;
	}
	
	~Data()
	{
		printf("destroy data()\n");
	}
	
	void setValue(int d1, int d2)
	{
		m_data1 = d1;
		m_data2 = d2;
	}
	
	void printData()
	{
		printf("data1 = %d\n", m_data1);
		printf("data2 = %d\n", m_data2);
	}
	
private:
	int m_data1;
	int m_data2;
};

void changeData(Data &d)
{
	d.setValue(20, 20);
}

int main()
{
	Data dx(100, 100);
	Data dy(dx);
	Data dz(200);
	return 0;
} 
